#pragma once
#include "mysql.h"
#include <string>
#include <vector>
#include <map>
using std::map;
using std::string;
using std::vector;

class SqlQuery
{
public:
    SqlQuery(MYSQL *conn);
    // 执行sql语句
    bool exec(const string &sql);
    // 判断是否是查询语句
    bool isSelect(const string &sql);

public:
    // 获取查询的结果集数据
    inline vector<vector<string>> getRes() { return m_res; }
    // 获取查询的结果集列名
    inline vector<string> getFields() { return m_fields; }
    // 获取出错信息
    inline string getErrorText() { return m_errorText; }
    // 获取结果集的行数
    inline int getRows() { return m_res.size(); }
    // 获取结果集的列数
    inline int getCols()
    {
        if (m_res.empty())
            return 0;
        return m_res.front().size();
    }

private:
    MYSQL *m_conn;                // 数据库连接句柄
    vector<vector<string>> m_res; // 查询的结果集(不包括列名,只包含数据)
    vector<string> m_fields;      // 结果集的列名
    string m_errorText;           // sql执行错误时的出错信息
};